package com.sojson.project.sys.role.controller.param.verify;

import java.io.IOException;

import com.sojson.enums.core.ERoleType;
import com.sojson.project.sys.role.entity.po.Role;
import com.sojson.result.Result;
import com.sojson.util.StringUtil;
import com.sojson.util.param.ParamUtil;

/**
 * 角色表控制器参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class RoleParamVerify {

    /**
     * 单条插入
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> save(Role dto) throws IOException {
        if (StringUtil.isBlank(dto.getName())) {
            return Result.fail("角色名称不能为空！");
        }
        if (StringUtil.isBlank(dto.getEnvironment())) {
            return Result.fail("菜单环境不能为空！");
        }
        String key = dto.getKey();
        if (StringUtil.isBlank(key)) {
            return Result.fail("角色权限字符串不能为空！");
        }
        if (ERoleType.ADMIN_SUPER.getKey().equals(key)) {
            return Result.fail("角色权限字符串不能为超级管理员！");
        }

        return init(dto);
    }

    /**
     * 通过id更新
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> updateById(Role dto) throws IOException {
        String id = dto.getId();
        if (StringUtil.isBlank(id)) {
            return Result.fail("ID不能为空！");
        }
        ParamUtil.verifyRoleIdExist(id);

        return init(dto);
    }

    /**
     * 参数初始化
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> init(Role dto) throws IOException {

        return Result.success();
    }

    /**
     * 通过id修改状态
     * 
     * @param dto
     * @return
     * @throws IOException 
     */
    public static Result<Boolean> updateStatus(Role dto) throws IOException {
        String id = dto.getId();
        if (StringUtil.isBlank(id)) {
            return Result.fail("ID不能为空！");
        }
        Integer status = dto.getStatus();
        if (StringUtil.isBlank(status)) {
            return Result.fail("状态不能为空！");
        }
        ParamUtil.verifyRoleIdExist(id);

        return Result.success();
    }

}